Object Oriented Programming עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Size: px
Start display at page:

Download "Object Oriented Programming עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון"

Transcription

1 Object Oriented Programming עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון

2 2 General Information Instructor: Azzam Maraee Office: building 37, room Course WEB site:

3 3 Book and credit for the slides We will mostly follow: The slides are based on Timothy Budds s slides for the book

4 4 Grading Home work: Programming exercises 40% of the total grade Via the submission system In class exam: Theoretical problems 60% of the total grade

5 5 Roadmap In this chapter we begin our exploration of object-oriented programming. Among the topics we will explore: Historical survey of computing and programming What is a paradigm? Why is this term used to describe the object-oriented approach to problem solving? How does language influence thought? Characteristics of the object-oriented way of thinking

6 Brief Historical Survey 2400 BC - Abacus (counting frame). 300 BC - The algorithm of Euclid for computing GCD(x,y) 100 BC - Antikythera mechanism al-khwārizmī systematic approach to solving equations led to algebra.

7 Brief Historical Survey (cont.) 1842 Ada Lovelace writes programs for Babbage s analytical engine The first electronic computer s The software crisis The United States Department of Defense define Steelman language requirements that lead to development of Ada programming language s - Object Oriented Programming becomes dominant programming methodology.

8 8 Conflicting Objectives Along the way, we'll try to convince you the validity of the following two assertions: OOP is a revolutionary idea, totally unlike anything that has come before in programming languages OOP is an evolutionary step, following naturally on the heels of earlier programming abstractions

9 9 Why has OOP remained popular for so long? OOP has been the dominant programming paradigm for more than twenty years. Why is it so popular? Proven record of success Scales well from small problems to large Resonant similarity to techniques for thinking about problems in other domains Nevertheless, programming is still a task that requires skill and learning

10 10 The Software Werewolf Software is like a werewolf it looks normal until the moon comes out and it turns into a monster Missed deadlines Blown budgets Buggy software We want the silver bullet to kill the monster something to make software costs drop as rapidly as computer hardware costs do.

11 11 There Is No Silver Bullet! As we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either essence, technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity

12 12 What is software and What is the Software Crisis? Computer programs and associated documentation Software products may be developed for a particular customer or may be developed for a general market What is the software crisis? Major projects are meaning fully late. Software costs more than predicted. Software is difficult to maintain. Poor performance. While hardware costs were decreasing, software costs were rising. requires techniques to control the complexity o large software systems.

13 13 A New Paradigm Object-oriented programming is often described as a new paradigm. We start by considering the definition of this term: Typical example or pattern of something; a model There is a new paradigm for public art in this country A worldview underlying the theories and methodology of a particular scientific subject The discovery of universal gravitation became the paradigm of successful science A set of linguistic items that form mutually exclusive choices in particular syntactic roles English determiners form a paradigm: we can say a book or his book but not a his book. A table of all the inflected forms of a particular verb, noun, or adjective, serving as a model for other words of the same conjugation or declension What does this have to do with computer programming languages?

14 14 "First, the new candidate must seem to resolve some outstanding and generally recognized problem that can be met in no other way. Second, the new paradigm must promise to preserve a relatively large part of the concrete problem solving activity that has accrued to science through its predecessors."

15 15 Programming Paradigm A way of conceptualizing what it means to perform computation and how tasks to be carried out on the computer should be structured and organized. Robert W. Floyd Imperative : Functional : Machine-model based Equations; Expression Evaluation Logical : First-order Logic Deduction Object-Oriented : Programming with Data Types

16 16 Sapir-Whorf Hypothesis Language, Thought, and Reality Selected Writings of Benjamin Lee Whorf language defines the way a person behaves and thinks: Eskimo (or Inuit) languages and snow Arabic languages and camel George Orwell's book 1984: a language entitled "newspeak" created to change the way people think about the government What is true of natural languages is even more true of artificial computer languages

17 17 Example from Computer Languages A student working in DNA research had the task of finding repeated sequences of M values in a long sequence of values: ACTCGGATCTTGCATTTCGGCAATTGGACCCTGACTTGGCCA Wrote the simplest (and therefore, most efficient?) program: DO 10 I = 1, N-M DO 10 J = I+1, N-M FOUND =.TRUE. DO 20 K = 1, M 20 IF X[I+K-1].NE. X[J+K-1] THEN FOUND =.FALSE. IF FOUND THEN CONTINUE Took a depressingly long time.

18 18 A Better Solution A friend writing in APL found a much better solution by rearranging the data and sorting: A C T C G G positions 1 to M C T C G G A positions 2 to M+1 T C G G A T positions 3 to M+2 C G G A T T positions 4 to M+3 G G A T T C positions 5 to M+4 G A T T C T positions 6 to M+5... T G G A C C G G A C C C... Ran surprisingly quickly, thesis saved

19 19 What lead to the discovery? Why did the APL programmer find the better solution? Fortran programmer was blinded by a culture that valued loops, simple programs Sorting is a built-in operation in APL, good programmers try to find novel uses for sorting The fundamental point is that the language you speak leads you in one direction or another But what about the Sapir-Whorf hypothesis, that says there are some thoughts you can express in one language that you cannot express in another?

20 20 Church's Conjecture In computer science we have the following assertion: Church's Conjecture: Any computation for which there exists an effective procedure can be realized by a Turing machine Anything can be done in any language, but it may simply be easier or more efficient to use one language or another Would you want to write an event-driven GUI interface in Turing machine? Bottom line: Languages lead you, but do not prevent you from going anywhere you want

21 21 Imperative Programming Imperative programming is the traditional model of computation: State / Variables / Assignment / Loops A processing unit is separate from memory, and acts upon memory: The computer is the data manager Wandering through memory, pulling values in memory slots Transforming them in some manner, and pushing results back in some other slots Although this is exactly what happens inside a computer, it is not the way people do for solving problems

22 22 Visualization of Imperative Programming Sometimes called the pigeon-hole model of computation: i: j: 2 3 x: 47 a[1]: a[2]: a[3]: a[4]:

23 23 Why Not Build a Program out of Computers? Alan Kay thought about this conventional design of the computer, and asked: Why we constructed the whole out of pieces that were useless by themselves Why not build a whole out of pieces that were similar at all levels of detail? (think of fractals) Idea: A program can be build out of little computing agents

24 24 Recursive Design The structure of the part mirrors the structure of the larger unit:

25 25 Kay's Description of Object- Oriented Programming Object-oriented programming is based on the principle of recursive design: 1. Everything is an object 2. Objects perform computation by making requests of each other through the passing of messages 3. Every object has it's own memory, which consists of other objects 4. Every object is an instance of a class. A class groups similar objects 5. The class is the repository for behavior associated with an object 6. Classes are organized into singly-rooted tree structure, called an inheritance hierarchy We can illustrate these principles by considering how we go about solving a problem in real life

26 26 Illustration of OOP Concepts -- Sending Flowers to a Friend To illustrate the concepts of OOP in an easily understood framework, consider the problem of sending flowers to a friend who lives in a different city: Chris is sending flowers to Robin. Chris can't deliver them directly. So Chris uses the services of the local Florist. Chris tells the Florist (named Fred) the address for Robin, how much to spend, and the type of flowers to send. Fred contacts a florist in Robins city, who arranges the flowers, then contacts a driver, who delivers the flowers If we start to think about it, there may even be other people involved in this transaction: There is the flower grower, perhaps somebody in charge of arrangements, and so on.

27 27 Agents and Communities Our first observation is that results are achieved through the interaction of agents, which we will call objects Furthermore, any nontrivial activity requires the interaction of an entire community of objects working together Each object has a part to play, a service they provide to the other members of the community Gardeners Robin Delivery Person Flower Arranger Grower Chris Fred Wholesaler Robbin's Florist

28 28 Elements of OOP - Objects Kay's first principle: 1) Everything is an object Actions in OOP are performed by agents, called instances or objects There are many agents working together in our scenario We have Chris, Robin, the florist, the florist in Robins city, the driver, the flower arranger, and the grower Each agent has a part to play, and the result is produced when all work together in the solution of a problem

29 29 Elements of OOP - Messages And the second principle: 2) Objects perform computation by making requests of each other through the passing of messages Actions in OOP are produced in response to requests for actions, called messages An instance may accept a message, and in return will perform an action and return a value To begin the process of sending the flowers, Chris gives a message to Fred. Fred in turn gives a message to the florist in Robins city, who gives another message to the driver, and so on

30 30 Information Hiding Notice that the user of a service being provided by an object, need only know the name of the messages that the object will accept The user need not know how the actions is performed Having accepted a message, an object is responsible for carrying it out

31 31 Elements of OOP - Receivers Messages differ from traditional function calls in two very important respects: In a message there is a designated receiver that accepts the message The interpretation of the message may be different, depending upon the receiver

32 32 Different Receivers, Same Message, Different Actions var Fred : Florist; Elizabeth : Friend; Ken : Dentist; begin Fred.sendFlowersTo(myFriend); { will work } Elizabeth.sendFlowersTo(myFriend); { will also work } Ken.sendFlowersTo(myFriend); { will probably not work } end; The same message will result in different actions, depending upon who it is given to

33 33 Behavior and Interpretation Although different objects may accept the same message, The actions (behavior) the object will perform will likely be different The determination of what behavior to perform may be made at run-time, a form of late binding The fact that the same name can mean two entirely different operations is one form of polymorphism

34 34 Elements of OOP Recursive Design 3) Every object has it's own memory, which consists of other objects. Each object is like a miniature computer itself - a specialized processor performing a specific task

35 35 Non-interference It is important that objects be allowed to perform their task however they see fit, without unnecessary interactions or interference with other objects. Instead of a bit-grinding processor... plundering data structures, we have a universe of well-behaved object that courteously ask each other to carry out their various desires -- Dan Ingalls

36 36 Ask not what you can do to your data structures, but ask what your data structures can do for you -- Timothy A. Budd

37 37 Elements of OOP - Classes 4) Every object is an instance of a class. A class groups similar objects. 5) The class is the repository for behavior associated with an object. The behavior I expect from Fred is determined from a general idea I have of the behavior of Florists We say Fred is an instance of the class Florist Behavior is associated with classes, not with individual instances All objects that are instances of a class use the same method in response to similar messages

38 38 Hierarchies of Categories But there is more that I know about Fred then just that he is a Florist I know he is a Shopkeeper, and a Human, and a Mammal, and a Material Objects, and so on At each level of abstraction I have certain information recorded That information is applicable to all lower (more specialized) levels Material Object Animal Mammal Human Shopkeeper Florist

39 39 Class Hierarchies Material Object Living Thing Non-Living Thing Animal Plant Rock Reptile Mammal Air Human Being Cat Dog Platypus Dentist Shopkeeper Artist Ken Flo Beth

40 40 Elements of OOP - Inheritance 6) Classes are organized into a singly-rooted tree structure, called an inheritance hierarchy Information (data and/or behavior) associated with one level of abstraction in a class hierarchy is automatically applicable to lower levels of the hierarchy

41 41 Elements of OOP - Overriding Subclasses can alter or override information inherited from parent classes: All mammals give birth to live young A platypus is an egg-laying mammal Inheritance combined with overriding are where most of the power of OO originates

42 42 Computing as Simulation The OOP view of computation is similar to creating a universe of interacting computing objects Similar to the way in which a committee or club might be organized Also very similar to a style of simulation called discrete event-driven simulation Easily under estimated advantage of this view -- power of metaphor

43 43 Metaphor and Problem Solving Because the OOP view is similar to the way in which people go about solving problems in real life (finding another agent to do the real work!), intuition, ideas, and understanding from everyday experience can be brought to bear on computing On the other hand, common sense was seldom useful when computers were viewed in the processstate model, since few people solve their everyday problems using pigeon-holes

44 44 From Newsweek Unlike the usual programming method -- writing software one line at a time-- NeXT's object-oriented system offers larger building blocks that developers can quickly assemble the way a kid builds faces on Mr. Potato Head.

45 45 Summary Object-oriented programming is not simply features added to a programming language. Rather, it is a new way of thinking Object-oriented programming views a program as a community of agents, termed objects Each object is responsible for a specific task An object is an encapsulation of state (data values) and behavior (operations) The behavior of objects is dictated by the object s class An object will exhibit its behavior by invoking a method (similar to executing a procedure) in response to a message Objects and classes extend the concept of abstract data types by adding the notion of inheritance

CITS2210. Object-Oriented Programming. Topic 1. Introduction and Fundamentals: Thinking Object-Oriented

CITS2210. Object-Oriented Programming. Topic 1. Introduction and Fundamentals: Thinking Object-Oriented CITS2210 Object-Oriented Programming Topic 1. Introduction and Fundamentals: Thinking Object-Oriented Summary: This topic considers the fundamental concepts behind object orientation, and why they are

More information

Fundamental Concepts (Principles) of Object Oriented Programming These slides are based on:

Fundamental Concepts (Principles) of Object Oriented Programming These slides are based on: 1 Fundamental Concepts (Principles) of Object Oriented Programming These slides are based on: [1] Timothy A. Budd, Oregon State University, Corvallis, Oregon, [Available] ClickMe, September 2001. 2 What

More information

Object-oriented perspective

Object-oriented perspective Starting Reader #2 Object-oriented perspective Operating system = computer interface Shell/libraries/system calls = OS interface Will return to OS topics in upcoming lectures. Now: OO intro. Objects l

More information

Inheritance and Substitution גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Inheritance and Substitution גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון Inheritance and Substitution גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will start to investigate the concepts of inheritance and substitution: The intuitive and practical

More information

Static and Dynamic Behavior לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Static and Dynamic Behavior לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון Static and Dynamic Behavior לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap In this chapter we will examine how differences in static and dynamic features effect object-oriented programming

More information

Static and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס

Static and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע י דר גרא וייס Static and Dynamic Behavior עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע "י ד"ר גרא וייס 2 Roadmap In this chapter we will examine how differences

More information

Inheritance and Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע"י ד"ר גרא וייס

Inheritance and Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות עי דר גרא וייס Inheritance and Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מובסס על הרצאות של אותו קורס שניתן בשנים הקודמות ע"י ד"ר גרא וייס 2 Roadmap In this chapter we will start to investigate the

More information

Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות

Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static,

More information

Underlying computer system = hardware + software

Underlying computer system = hardware + software Underlying computer system = hardware + software Thanks to Chandra Krintz and Kevin Sanft, for this figure and some other parts of these lecture notes. Processing data & instructions Program instructions

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented

More information

Introduction and Review of Java: Part 2

Introduction and Review of Java: Part 2 Introduction and Review of Java: Part 2 Fundamental Concepts (Principles) of Object Oriented Programming Java s implementation of Object Oriented Programming 1of 59 WHAT IS OBJECT ORIENTED PROGRAMMING?

More information

Overloading המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון

Overloading המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון Overloading עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate the idea of overloading: Overloading based on scopes Overloading based on type signatures Coercion,

More information

A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN

A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN A STUDY OF OBJECT ORIENTED ANALYSIS AND DESIGN GARJE RAKESH RAMESHRAO RESEARCH SCHOLAR, DEPT. OF COMPUTER SCIENCE CMJ UNIVERSITY, SHILLONG, MEGHALAYA INTRODUCTION Object-oriented Analysis and Design is

More information

Object- Oriented Design with UML and Java Part I: Fundamentals

Object- Oriented Design with UML and Java Part I: Fundamentals Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html

More information

Multi-Paradigm Approach for Teaching Programming

Multi-Paradigm Approach for Teaching Programming Multi-Paradigm Approach for Teaching Laxmi P Gewali* and John T Minor School of Computer Science University of Nevada, Las Vegas 4505 Maryland Parkway, Las Vegas Nevada 89154 Abstract: Selecting an appropriate

More information

Overriding המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון

Overriding המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון Overriding עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap A method in a child class overrides a method in the parent class if it has the same name and type signature: Parent void method(int,float)

More information

Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming CS420/520 Winter 2012 Prof Andrew P. Black 1 Administrivia Instructor: Andrew Black, 503 725 2411 (office) 503 803 1669 (cell). email: black@cs.pdx.edu, put [CS520] in subject

More information

The Essence of Object Oriented Programming with Java and UML. Chapter 2. The Essence of Objects. What Is an Object-Oriented System?

The Essence of Object Oriented Programming with Java and UML. Chapter 2. The Essence of Objects. What Is an Object-Oriented System? Page 1 of 21 Page 2 of 21 and identity. Objects are members of a class, and the attributes and behavior of an object are defined by the class definition. The Essence of Object Oriented Programming with

More information

CHAPTER 5 GENERAL OOP CONCEPTS

CHAPTER 5 GENERAL OOP CONCEPTS CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should

More information

Computer Science 32 Object-Oriented Oriented Design and Implementation (in C++ on Linux)

Computer Science 32 Object-Oriented Oriented Design and Implementation (in C++ on Linux) Computer Science 32 Object-Oriented Oriented Design and Implementation (in C++ on Linux) Pre-requisite: CS 24 So already know much C++ including object-based fundamentals: classes and ADTs Also familiar

More information

6.001 Notes: Section 1.1

6.001 Notes: Section 1.1 6.001 Notes: Section 1.1 Slide 1.1.1 This first thing we need to do is discuss the focus of 6.001. What is this course all about? This seems quite obvious -- this is a course about computer science. But

More information

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN

CSC 326H1F, Fall Programming Languages. What languages do you know? Instructor: Ali Juma. A survey of counted loops: FORTRAN What languages do you know? CSC 326H1F, Programming Languages The usual suspects: C, C++, Java fine languages nearly the same Perhaps you've also learned some others? assembler Basic, Visual Basic, Turing,

More information

Introduction. Object-Oriented Programming Spring 2015

Introduction. Object-Oriented Programming Spring 2015 Introduction Object-Oriented Programming 236703 Spring 2015 1 Course Staff Lecturer in charge: Prof. Eran Yahav Lecturer: Eran Gilad TA in charge: Nurit Moscovici TAs: Helal Assi, Eliran Weiss 3 Course

More information

An Overview of Visual Basic.NET: A History and a Demonstration

An Overview of Visual Basic.NET: A History and a Demonstration OVERVIEW o b j e c t i v e s This overview contains basic definitions and background information, including: A brief history of programming languages An introduction to the terminology used in object-oriented

More information

Paradise Lost: Almost Nobody Knows What s Really Happening Inside a Modern Software Application

Paradise Lost: Almost Nobody Knows What s Really Happening Inside a Modern Software Application Paradise Lost: Almost Nobody Knows What s Really Happening Inside a Modern Software Application In the 1980s, with the advent of interactive software such as Macintosh and Windows, and with widespread

More information

Object-Oriented Programming in C++/Handout 01 Page 1 of 8

Object-Oriented Programming in C++/Handout 01 Page 1 of 8 Object-Oriented Programming in C++/Handout 01 Page 1 of 8 Table of Contents Table of Contents... 1 Learning Objectives... 2 Object-Oriented Approach... 2 Advantages of Object-Oriented Approach... 2 Principles

More information

A Brief History of Computer Science

A Brief History of Computer Science A Brief History of Computer Science 4700 Hundred years ago Sumerians invented the abacus Sand, lines, pebbles Sexagesimal Base 60 still used today Time, distance How do you count like that? Side trip Factors

More information

Abstraction עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Abstraction עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון Abstraction עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Tools for Programming Complex Software Fundamentally, people use only a few simple tools to create, understand, or manage complex systems

More information

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline

Grade Weights. Language Design and Overview of COOL. CS143 Lecture 2. Programming Language Economics 101. Lecture Outline Grade Weights Language Design and Overview of COOL CS143 Lecture 2 Project 0% I, II 10% each III, IV 1% each Midterm 1% Final 2% Written Assignments 10% 2.% each Prof. Aiken CS 143 Lecture 2 1 Prof. Aiken

More information

Lecturer: William W.Y. Hsu. Programming Languages

Lecturer: William W.Y. Hsu. Programming Languages Lecturer: William W.Y. Hsu Programming Languages Chapter 9 Data Abstraction and Object Orientation 3 Object-Oriented Programming Control or PROCESS abstraction is a very old idea (subroutines!), though

More information

WELCOME! (download slides and.py files and follow along!) LECTURE 1

WELCOME! (download slides and.py files and follow along!) LECTURE 1 WELCOME! (download slides and.py files and follow along!) 6.0001 LECTURE 1 6.0001 LECTURE 1 1 TODAY course info what is computation python basics mathematical operations python variables and types NOTE:

More information

Lecture 2 and 3: Fundamental Object-Oriented Concepts Kenneth M. Anderson

Lecture 2 and 3: Fundamental Object-Oriented Concepts Kenneth M. Anderson Lecture 2 and 3: Fundamental Object-Oriented Concepts Kenneth M. Anderson January 13, 2005 January 18, 2005 1 of 38 Lecture Goals Introduce the basic concepts of object-oriented analysis/design/programming

More information

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page: http://www.it.uu.se/edu/course/homepage/komp/h18

More information

1DL321: Kompilatorteknik I (Compiler Design 1)

1DL321: Kompilatorteknik I (Compiler Design 1) Administrivia 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page: http://www.it.uu.se/edu/course/homepage/komp/ht16

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

What is a programming language?

What is a programming language? Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? What is a programming language?...there is no agreement on what a programming language

More information

CSE Theory of Computing Fall 2017 Project 4-Combinator Project

CSE Theory of Computing Fall 2017 Project 4-Combinator Project CSE 30151 Theory of Computing Fall 2017 Project 4-Combinator Project Version 1: Nov. 20, 2017 1 Overview At this point you understand computations that happen as planned series of individual steps where

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

Object-Oriented Technology. Rick Mercer

Object-Oriented Technology. Rick Mercer Object-Oriented Technology Rick Mercer 1 Object-Oriented Technology: Outline Consider a few ways in which data is protected from careless modification Mention the key features object-oriented style of

More information

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction Lecture 13: Object orientation Object oriented programming Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO

More information

Lecture 2: Software Engineering (a review)

Lecture 2: Software Engineering (a review) Lecture 2: Software Engineering (a review) Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Credit where Credit is Due Some material presented in this lecture is

More information

2.4 Structuring programs

2.4 Structuring programs 2.4 Structuring programs While theoretically a program could be written as one big expression, in reality we want some structure so that l The programmer has it easier to read the program l A compiler

More information

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING JAN BARTONÍČEK This paper's goal is to briefly explain the basic theory behind programming languages and their history

More information

MODERN PROGRAMMING LANGUAGE TECHNIQUES Dilawar 1 1 Ch. Mani Ram Godara Govt. College For Women, Bhodia Khera, Fatehabad, INDIA dilawarfatehabad@gmail.com Abstract--This paper focus on introduction of computer

More information

Agent Design Example Problems State Spaces. Searching: Intro. CPSC 322 Search 1. Textbook Searching: Intro CPSC 322 Search 1, Slide 1

Agent Design Example Problems State Spaces. Searching: Intro. CPSC 322 Search 1. Textbook Searching: Intro CPSC 322 Search 1, Slide 1 Searching: Intro CPSC 322 Search 1 Textbook 3.0 3.3 Searching: Intro CPSC 322 Search 1, Slide 1 Lecture Overview 1 Agent Design 2 Example Problems 3 State Spaces Searching: Intro CPSC 322 Search 1, Slide

More information

Fractal Data Modeling

Fractal Data Modeling Fractal Data Modeling Fractal geometry creates beautiful patterns from simple recursive algorithms. One of the things we find so appealing is their self- similarity at different scales. That is, as you

More information

Lecture 5: The Halting Problem. Michael Beeson

Lecture 5: The Halting Problem. Michael Beeson Lecture 5: The Halting Problem Michael Beeson Historical situation in 1930 The diagonal method appears to offer a way to extend just about any definition of computable. It appeared in the 1920s that it

More information

Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון Implications of Substitution עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate some of the implications of the principle of substitution in statically typed

More information

H1 Spring C. A service-oriented architecture is frequently deployed in practice without a service registry

H1 Spring C. A service-oriented architecture is frequently deployed in practice without a service registry 1. (12 points) Identify all of the following statements that are true about the basics of services. A. Screen scraping may not be effective for large desktops but works perfectly on mobile phones, because

More information

TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1

TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1 TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1 ABSTRACT Test-Driven Development is a design strategy where a set of tests over a class is defined prior to the implementation of that class. The goal

More information

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page (of previous year):

More information

Introduction. Object Orientated Analysis and Design. Benjamin Kenwright

Introduction. Object Orientated Analysis and Design. Benjamin Kenwright Introduction Object Orientated Analysis and Design Benjamin Kenwright Outline What do we mean by Object Orientated? Why do we need to analyze and design our solutions? Give examples What analysis and design

More information

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering Slide 1.1 CHAPTER 1 Slide 1.2 Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 THE SCOPE OF SOFTWARE ENGINEERING Stephen R. Schach Outline Slide 1.3 Outline (contd)

More information

ECOM 2314 COMPUTER PROGRAMMING II

ECOM 2314 COMPUTER PROGRAMMING II ECOM 2314 COMPUTER PROGRAMMING II Object Oriented Programming with JAVA Instructor: Ruba A. Salamh Islamic University of Gaza Course Description The course is a continuation of ECOM 2314 (computer programming

More information

1. Write two major differences between Object-oriented programming and procedural programming?

1. Write two major differences between Object-oriented programming and procedural programming? 1. Write two major differences between Object-oriented programming and procedural programming? A procedural program is written as a list of instructions, telling the computer, step-by-step, what to do:

More information

Object-Oriented Design גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Object-Oriented Design גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון Object-Oriented Design גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Why Start with Design? Object-oriented thinking begins with objectoriented design It is the easiest way to see the problems of

More information

Chapter 9 :: Data Abstraction and Object Orientation

Chapter 9 :: Data Abstraction and Object Orientation Chapter 9 :: Data Abstraction and Object Orientation Programming Language Pragmatics Michael L. Scott Control or PROCESS abstraction is a very old idea (subroutines!), though few languages provide it in

More information

BCS THE CHARTERED INSTITUTE FOR IT. BCS Higher Education Qualifications BCS Level 6 Professional Graduate Diploma in IT EXAMINERS' REPORT

BCS THE CHARTERED INSTITUTE FOR IT. BCS Higher Education Qualifications BCS Level 6 Professional Graduate Diploma in IT EXAMINERS' REPORT BCS THE CHARTERED INSTITUTE FOR IT BCS Higher Education Qualifications BCS Level 6 Professional Graduate Diploma in IT March 2015 EXAMINERS' REPORT Programming Paradigms General comments on candidates'

More information

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering Object-Oriented and Classical Software Engineering Slide 1.1 Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach srs@vuse.vanderbilt.edu CHAPTER 1 Slide 1.2 THE SCOPE OF SOFTWARE ENGINEERING 1 Outline

More information

Polymorphism. Arizona State University 1

Polymorphism. Arizona State University 1 Polymorphism CSE100 Principles of Programming with C++, Fall 2018 (based off Chapter 15 slides by Pearson) Ryan Dougherty Arizona State University http://www.public.asu.edu/~redoughe/ Arizona State University

More information

REVIEW AND OUTLOOKS OF THE MEANS FOR VISUALIZATION OF SYNTAX SEMANTICS AND SOURCE CODE. PROCEDURAL AND OBJECT ORIENTED PARADIGM DIFFERENCES

REVIEW AND OUTLOOKS OF THE MEANS FOR VISUALIZATION OF SYNTAX SEMANTICS AND SOURCE CODE. PROCEDURAL AND OBJECT ORIENTED PARADIGM DIFFERENCES REVIEW AND OUTLOOKS OF THE MEANS FOR VISUALIZATION OF SYNTAX SEMANTICS AND SOURCE CODE. PROCEDURAL AND OBJECT ORIENTED PARADIGM DIFFERENCES Hristo Hristov Abstract. In the article, we have reviewed the

More information

Programmazione. Prof. Marco Bertini

Programmazione. Prof. Marco Bertini Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Introduction Why OO Development? Improved structure of software easier to: Understand Maintain Enhance Reusable

More information

(Refer Slide Time 3:31)

(Refer Slide Time 3:31) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions

More information

Advances in Programming Languages

Advances in Programming Languages T O Y H Advances in Programming Languages APL1: What s so important about language? Ian Stark School of Informatics The University of Edinburgh Tuesday 16 September 2014 Semester 1 Week 1 E H U N I V E

More information

Programming Languages 2nd edition Tucker and Noonan"

Programming Languages 2nd edition Tucker and Noonan Programming Languages 2nd edition Tucker and Noonan" " Chapter 1" Overview" " A good programming language is a conceptual universe for thinking about programming. " " " " " " " " " " " " "A. Perlis" "

More information

Lecture 1: Overview

Lecture 1: Overview 15-150 Lecture 1: Overview Lecture by Stefan Muller May 21, 2018 Welcome to 15-150! Today s lecture was an overview that showed the highlights of everything you re learning this semester, which also meant

More information

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164) Introduction to Programming Languages and Compilers CS164 11:00-12:30 TT 10 Evans 1 ICOM 4036 - Outline Prontuario Course Outline Brief History of PLs Programming Language Design Criteria Programming Language

More information

COURSE OVERVIEW. Introduction to Computer Engineering 2015 Spring by Euiseong Seo

COURSE OVERVIEW. Introduction to Computer Engineering 2015 Spring by Euiseong Seo COURSE OVERVIEW Introduction to Computer Engineering 2015 Spring by Euiseong Seo Course Objectives Introduction to computer engineering For computer engineer-wannabe For students studying other fields

More information

Programming Paradigms

Programming Paradigms Programming Paradigms Programming languages A Programming language is a notational system for describing tasks/computations in a machine and human readable form. Most computer languages are designed to

More information

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing What Is Computer Science? The Scientific Study of Computation CMPSCI 630: Programming Languages Introduction Spring 2009 (with thanks to Robert Harper) Expressing or Describing Automating Understanding

More information

Sets. Sets. Examples. 5 2 {2, 3, 5} 2, 3 2 {2, 3, 5} 1 /2 {2, 3, 5}

Sets. Sets. Examples. 5 2 {2, 3, 5} 2, 3 2 {2, 3, 5} 1 /2 {2, 3, 5} Sets We won t spend much time on the material from this and the next two chapters, Functions and Inverse Functions. That s because these three chapters are mostly a review of some of the math that s a

More information

Lecture Notes on Programming Languages

Lecture Notes on Programming Languages Lecture Notes on Programming Languages 85 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered

More information

CPS122 Lecture: Detailed Design and Implementation

CPS122 Lecture: Detailed Design and Implementation CPS122 Lecture: Detailed Design and Implementation Objectives: Last revised March 3, 2017 1. To introduce the use of a complete UML class box to document the name, attributes, and methods of a class 2.

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

The object-oriented approach goes a step further by providing tools for the programmer to represent elements in the problem space.

The object-oriented approach goes a step further by providing tools for the programmer to represent elements in the problem space. 1 All programming languages provide abstractions. Assembly language is a small abstraction of the underlying machine. Many imperative languages (FORTRAN, BASIC, and C) are abstractions of assembly language.

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

CS457/557 Functional Languages

CS457/557 Functional Languages CS457/557 Functional Languages Spring 2018 Lecture 1: Course Introduction Andrew Tolmach Portland State University (with thanks to Mark P. Jones) 1 Goals of this course Introduce the beautiful ideas of

More information

Object interconnections גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Object interconnections גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון Object interconnections גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we move up a level of abstraction, and consider collections of objects working together Our focus will

More information

CPS 506 Comparative Programming Languages. Programming Language

CPS 506 Comparative Programming Languages. Programming Language CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support

More information

The Sun s Java Certification and its Possible Role in the Joint Teaching Material

The Sun s Java Certification and its Possible Role in the Joint Teaching Material The Sun s Java Certification and its Possible Role in the Joint Teaching Material Nataša Ibrajter Faculty of Science Department of Mathematics and Informatics Novi Sad 1 Contents Kinds of Sun Certified

More information

Curriculum Mapping for National Curriculum Statement Grades R-12 and Oracle Academy.

Curriculum Mapping for National Curriculum Statement Grades R-12 and Oracle Academy. Curriculum Mapping for National Curriculum Statement Grades R-12 and Oracle Academy. Contents Executive Summary... 3 IT Curriculum Overview... 3 Aims... 3 Oracle Academy Introduction to Computer Science...

More information

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently. Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple movie data system. Milestones: 1. Use

More information

More OO Fundamentals. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 4 09/11/2012

More OO Fundamentals. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 4 09/11/2012 More OO Fundamentals CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 4 09/11/2012 1 Goals of the Lecture Continue a review of fundamental object-oriented concepts 2 Overview of OO Fundamentals

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class CS112 Lecture: Defining Classes Last revised 2/3/06 Objectives: 1. To describe the process of defining an instantiable class Materials: 1. BlueJ SavingsAccount example project 2. Handout of code for SavingsAccount

More information

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented

More information

Chapter 4C Homework Functions III Individual Assignment 30 Points Questions 6 Points Script 24 Points

Chapter 4C Homework Functions III Individual Assignment 30 Points Questions 6 Points Script 24 Points PCS1-Ch-4C-Functions-3-HW.docx CSCI 1320 Initials P a g e 1 If this lab is an Individual assignment, you must do all coded programs on your own. You may ask others for help on the language syntax, but

More information

9.1 OO Methodology OO Design Object

9.1 OO Methodology OO Design Object 1 9.1 OO Methodology OO Design A problem-solving methodology that produces a solution to a problem in terms of self-contained entities called objects Object A thing or entity that makes sense within the

More information

So far, we have seen two different approaches for using computing to solve problems:

So far, we have seen two different approaches for using computing to solve problems: Chapter 10 Objects By the word operation, we mean any process which alters the mutual relation of two or more things, be this relation of what kind it may. This is the most general definition, and would

More information

Chapter 10 :: Data Abstraction and Object Orientation

Chapter 10 :: Data Abstraction and Object Orientation Chapter 10 :: Data Abstraction and Object Orientation Programming Language Pragmatics, Fourth Edition Michael L. Scott Copyright 2016 Elsevier Chapter10_Data_Abstraction_and_Object_Orientation_4e 1 Object-Oriented

More information

CSE Theory of Computing Fall 2017 Project 1-SAT Solving

CSE Theory of Computing Fall 2017 Project 1-SAT Solving CSE 30151 Theory of Computing Fall 2017 Project 1-SAT Solving Version 3: Sept. 21, 2017 The purpose of this project is to gain an understanding of one of the most central problems of computing: Boolean

More information

Inheritance and Substitution (Budd chapter 8, 10)

Inheritance and Substitution (Budd chapter 8, 10) Inheritance and Substitution (Budd chapter 8, 10) 1 2 Plan The meaning of inheritance The syntax used to describe inheritance and overriding The idea of substitution of a child class for a parent The various

More information

Concepts of Programming Languages

Concepts of Programming Languages Concepts of Programming Languages Lecture 1 - Introduction Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages Spring 2014

More information

Knowledge representation Semantic networks and frames

Knowledge representation Semantic networks and frames Knowledge representation Semantic networks and frames CmSc310 Artificial Intelligence 1. Introduction: What is knowledge? The science that studies various issues about knowledge is called epistemology.

More information

Managing Change and Complexity

Managing Change and Complexity Managing Change and Complexity The reality of software development Overview Some more Philosophy Reality, representations and descriptions Some more history Managing complexity Managing change Some more

More information

Data Structures (list, dictionary, tuples, sets, strings)

Data Structures (list, dictionary, tuples, sets, strings) Data Structures (list, dictionary, tuples, sets, strings) Lists are enclosed in brackets: l = [1, 2, "a"] (access by index, is mutable sequence) Tuples are enclosed in parentheses: t = (1, 2, "a") (access

More information

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple magazine data system. Milestones:

More information

Computer Science 9608 (Notes) Chapter: 4.1 Computational thinking and problem-solving

Computer Science 9608 (Notes) Chapter: 4.1 Computational thinking and problem-solving UWhat is Computational Thinking? Computational thinking (CT) involves a set of skills and techniques that software engineers use to write programs that underlie the computer applications you use such as

More information